With the communication of large amounts of electronic data comes the probability of data errors. These errors can be caused by a variety of phenomenon: noisy communication media, electronic interference, sun spots, faulty communication lines, broken wires, etc. As improvements are made in the information technology industry, various methods of error correction, also known as error correction code (ECC) have been developed and used to minimize communication errors. Data rates have been increasing almost exponentially between CPUs and memory, as well as transmitted between nodes. It is critical that data retrieved from memory, as well as transmitted data, be deemed reliable, i.e., free from errors.
There are typically two parts to ECC schemes: detecting errors and correcting detected errors. In some applications that are not time critical, detection of an error may result simply in the data being re-sent, rather than corrected. This method is too slow for most applications. In other applications, error correction takes place in software. This method is also too slow for many applications.